﻿

var backData = {};
layui.use(["eleTree", "util","transfer"],
    function () {
        var $ = layui.jquery;
        var eleTree = layui.eleTree, util = layui.util,transfer=layui.transfer;
        var index = 0;
        var ele = eleTree({
            el: '#treeT',
            data: getData(),
            highlightCurrent: true,
            expandOnClickNode: true,
            imgUrl: "/img/eleTreeImages/",
            icon: {
                fold: "fold.png",
                leaf: "leaf.png",
                checkFull: ".eletree_icon-check_full",
                checkHalf: ".eletree_icon-check_half",
                checkNone: ".eletree_icon-check_none",
                dropdownOff: ".eletree_icon-dropdown_right",
                dropdownOn: ".eletree_icon-dropdown_bottom",
                loading: ".eleTree-animate-rotate.eletree_icon-loading1",
                radioCheck: "radioCheck.png",
                radioCheckNone: "radioCheckNone.png"
            },
            customText: function (data) {
                var s = data.label;
                if (data.rank !== 3) {
                    s += `<i class="layui-icon layui-icon-add-1" ></i>
                            <i class="layui-icon layui-icon-edit"></i>
                            <i class="layui-icon layui-icon-delete"></i>`;
                }
                else if (data.rank === 3) {
                    s += `
                            <i class="layui-icon layui-icon-edit"></i>
                            <i class="layui-icon layui-icon-delete"></i>
                             <i class="layui-icon layui-icon-transfer" ></i>
                            <i class="layui-icon layui-icon-note" ></i>`;
                }
                return s;
            }
        });
        ele.on('click',
            function (data) {
                const dynamicId = data.data.id; //动态id
                let resId; //去除id中 的字母
                if (dynamicId.indexOf("1p") !== -1) {
                    resId = dynamicId.replace("1p", "");
                } else if (dynamicId.indexOf("2p") !== -1) {
                    resId = dynamicId.replace("2p", "");
                } else if (dynamicId.indexOf("3p") !== -1) {
                    resId = dynamicId.replace("3p", "");
                }
                if (this.target.classList.contains('layui-icon-add-1')) {
                    ele.append(data.data.id,
                        {
                            id: ++index,  //随意Id
                            resId: resId, //净ID
                            label: 'abc' + index,
                            rank: data.data.rank, //父级等级
                            varyId: data.data.varyId  //父级的父母Id
                        });
                    // 编辑完成触发add_child事件
                    ele.edit(index, 'add_child');
                } else if (this.target.classList.contains('layui-icon-note')) {
                    layer.open({
                        id: 5,
                        title: "关键词(多个关键词请换行添加)",
                        type: 1,
                        area: ['20%', '50%'],
                        content:'<textarea id="textBox" class="layui-textarea" style="margin:5px;min-width:98%;min-height:96%" ></textarea>',
                        btn: ["保存", "关闭"],
                        btn1: function (index, layero) {
                            var text = $("#textBox").val().trim();
                            $.ajax({
                                type: "POST",
                                url: "/Curricula/AddKeywords",
                                data: {
                                    keywords: text,
                                    id:resId
                                },
                                dataType: "text",
                                success: function (data) {
                                    layer.msg("保存成功！");
                                    layer.close(index);
                                }
                            });
                      
                        },
                        btn2: function (index, layero) {
                            layer.close(index);
                        }
                    });

                    $.ajax({
                        type: "POST",
                        url: "/Curricula/ReturnKeywords",
                        data: {
                            id: resId
                        },
                        dataType: "text",
                        success: function (data) {
                            $("#textBox").val(data);
                        }
                    });
                } else if (this.target.classList.contains('layui-icon-transfer')) {
                    var storageData = window.sessionStorage; //使用会话缓存

                    layer.open({
                        id: 4,
                        title: "题目归类",
                        type: 1,
                        area: ['70%', '70%'],
                        content: `<div id="transferT" style="padding:10px"></div>`,
                        btn: ["保存", "关闭"],
                        btn1: function(index, layero) {
                            $.ajax({
                                type: "POST",
                                url: "/Curricula/ModifyQuestClass",
                                data: {
                                    id: resId,
                                    classData: JSON.stringify(storageData)
                                },
                                dataType: "text",
                                success: function(data) {
                                    layer.msg("保存成功！");
                                }
                            });
                            storageData.clear();
                        },
                        btn2: function(index, layero) {
                            storageData.clear();
                            layer.close(index);
                        }
                    });
                    var initialData = GetTransferData(resId);
                    var initialRight = []; //初始右边数据，即已分类数据
                    for (let i in initialData) {
                        if (initialData[i].haveClass === true) {
                            initialRight.push(initialData[i].Id);
                        }
                    }

                    transfer.render({
                        elem: '#transferT' //绑定元素
                        ,
                        title: ["未分类", data.data.label],
                        width: "45%",
                        value: initialRight,
                        data: initialData,
                        id: 'demo2' //定义索引
                        ,
                        parseData: function(res) {
                            return {
                                "value": res.Id //数据值
                                ,
                                "title": res.QuestName //数据标题
                                ,
                                "disabled": res.disabled //是否禁用
                                ,
                                "checked": res.checked //是否选中
                            }
                        },
                        onchange: function(data, index) {
                            if (index === 0) {
                                for (var k in data) {
                                    var p = storageData.hasOwnProperty(data[k].value);
                                    if (p) {
                                        storageData.removeItem(data[k].value);
                                    } else {
                                        storageData.setItem(data[k].value, 1); //将分类
                                    }

                                }

                            } else if (index === 1) {
                                for (var k in data) {
                                    var p = storageData.hasOwnProperty(data[k].value);
                                    if (p) {
                                        storageData.removeItem(data[k].value);
                                    } else {
                                        storageData.setItem(data[k].value, 0); //取消分类
                                    }


                                }
                            }
                        }
                    });
                } else if (this.target.classList.contains('layui-icon-edit')) {
                    // 编辑完成触发edit事件
                    ele.edit(data.data.id, 'edit');
                } else if (this.target.classList.contains('layui-icon-delete')) {
                    layer.confirm('确认删除？',
                        { icon: 3, title: '提示' },
                        function(index) {
                            $.ajax({
                                type: "POST",
                                url: "/Curricula/DeleteModule",
                                async: false,
                                data: {
                                    id: resId,
                                    rank: data.data.rank
                                },
                                dataType: "json",
                                success: function(data1) {
                                    if (data1.msg !== false) {
                                        layer.msg("删除成功");
                                        ele.remove(data.data.id);
                                    } else {
                                        layer.msg("删除失败");
                                        data.stop();
                                    }

                                }
                            });
                            layer.close(index);
                        });
                }
            }).on('add_child', function (data) {
                //console.log(this);
                //console.log(data);
                setTimeout(() => {
                    const url = "/Curricula/AddModule";
                    let content;
                    switch (data.data.rank) {
                        case 1:
                            content = {
                                newTitle: data.data.label, //新title
                                varyId: data.data.varyId, //父级课程id 保留传参
                                id: data.data.resId,  //父级id
                                rank: data.data.rank //父级等级
                            };
                            addAjax(url, content);
                            break;
                        case 2:
                            content = {
                                newTitle: data.data.label, //新title
                                varyId: data.data.varyId, //父级id 
                                id: data.data.resId,  //父级id
                                rank: data.data.rank //父级等级
                            };
                            addAjax(url, content);
                            break;
                    }
                    if (backData.tf) {
                        data.data.id = backData.id;
                        data.data.varyId = backData.varyId;
                        data.data.resId = null;
                        data.data.rank = backData.rank;
                        data.load(data.data);
                        layer.msg("添加成功");
                    } else {
                        data.stop();
                        layer.msg("分类已存在！");
                    }
                },
                    200);
            })
            .on('edit', function (data) {
            setTimeout(() => {
                    const url = "/Curricula/EditModule";
                    let content;
                    let resId; //去除id中 的字母
                    const dynamicId = data.data.id; //动态id
                    if (dynamicId.indexOf("1p") !== -1) {
                        resId = dynamicId.replace("1p", "");
                    } else if (dynamicId.indexOf("2p") !== -1) {
                        resId = dynamicId.replace("2p", "");
                    } else if (dynamicId.indexOf("3p") !== -1) {
                        resId = dynamicId.replace("3p", "");
                    }

                    switch (data.data.rank) {
                        case 1:
                            content = {
                                newTitle: data.data.label,
                                varyId: data.data.varyId,
                                id: resId,
                                rank: data.data.rank
                            };
                            toAjax(url, content);
                            break;
                        case 2:
                            content = {
                                newTitle: data.data.label,
                                varyId: data.data.varyId,
                                id: resId,
                                rank: data.data.rank
                            };
                            toAjax(url, content);
                            break;
                        case 3:
                            content = {
                                newTitle: data.data.label,
                                varyId: data.data.varyId,
                                id: resId,
                                rank: data.data.rank
                            };
                            toAjax(url, content);
                            break;
                    }
                    if (backData.tf) {
                        data.load();
                        layer.msg("修改成功");
                    } else {
                        data.stop();
                    }

                }, 200);
            });

        util.event('lay-demo',   //添加根目录
            {
                addParent: function () {
                    layer.prompt({ title: '添加', formType: 3 },
                        function (text, index) {
                            layer.close(index);
                            const url = "/Curricula/AddModule";

                            let content = {
                                newTitle: text, //新title
                                varyId: -1, //父级课程id
                                id: -1,  //父级id
                                rank: 1 //父级等级
                            };
                            $.ajax({
                                type: "POST",
                                url: url,
                                data: content,
                                dataType: "json",
                                success: function (data) {
                                    if (data.msg !== false) {
                                        ele.reload({ data: getData() });//重载树
                                    }
                                    else {
                                        layer.msg("分类已存在！");
                                    }
                                }
                            });
                        }
                    );
                }
            });
    }
);

function GetTransferData(id) {
    var res;
    $.ajax({
        type: "POST",
        url: "/Curricula/ReturnTransferData",
        data: {Id:id}, //id为小模块的id
        dataType: "text",
        async: false,
        success: function(data) {
            res = data;
        }
    });
    return eval(`(${res})`);
}


function toAjax(urls, content) {
    $.ajax({
        type: "POST",
        url: urls,
        data: content,
        dataType: "json",
        async: false,
        success: function (data) {
            if (data.msg !== false) {
                if (data.msg === "exist") {
                    backData = { tf: false };
                    layer.msg("分类已存在,保存失败！");
                } else {
                    backData = { tf: true };
                }
            }
            else {
                backData = { tf: false };
            }
        }
    });
}

function getData() {
    var data;
    $.ajax({
        url: "/Curricula/ReturnModule",
        type: "POST",
        async: false,
        dataType: "text",
        success: function (res) {
            data = res;
        }
    });

    return eval(`(${data})`);
}
function addAjax(urls, content) {

    $.ajax({
        async: false, //同步加载，异步ajax不能赋值全局变量
        type: "POST",
        url: urls,
        data: content,
        dataType: "json",

        success: function (data) {
            if (data.msg !== false) {

                backData = { tf: true, title: data.label, id: data.rank + "p" + data.id, varyId: data.varyId, rank: data.rank };

            } else {

                backData = { tf: false };

            }

        }
    });
}


//分割线，前tree、组件代码
//var addNewFunction;//接收回调函数
//layui.use(['tree', 'util'], function () {
//    var tree = layui.tree, layer = layui.layer, util = layui.util;
//    //渲染
//    var inst1 = tree.render({
//        elem: '#test1', //绑定元素
//        id: 'menuTree',
//        edit: ['add', 'update', 'del'],
//        limitNodeAddLevel: 3 //限制3级不再添加
//        // limitNodeDelLevel: 1
//        , data: getData()
//        , operate: function (obj, callback) {
//            var type = obj.type;
//            var data = obj.data;
//            var elem = obj.elem;

//            if (type === 'add') { //增加节点
//                addNewFunction = callback;
//                const url = "/Curricula/AddModule";
//                let content;
//                var id = data.id;

//                layer.prompt({ title: '添加', formType: 3 },
//                    function (text, index) {
//                        layer.close(index);
//                        //var contents= { title: text, id: -1, varyId: -1, rank: data.rank + 1 } 
//                        switch (data.rank) {
//                            case 1:
//                                content = {
//                                    newTitle: text, //新title
//                                    varyId: data.varyId, //父级课程id 保留传参
//                                    id: data.id,  //父级id
//                                    rank: data.rank //父级等级
//                                };
//                                addAjax(url, content);
//                                break;
//                            case 2:
//                                content = {
//                                    newTitle: text, //新title
//                                    varyId: data.varyId, //父级id 
//                                    id: data.id,  //父级id
//                                    rank: data.rank //父级等级
//                                };
//                                addAjax(url, content);
//                                break;
//                        }

//                    });
//            }
//            else if (type === 'update') { //修改节点
//                const url = "/Curricula/EditModule";
//                let content;
//                switch (data.rank) {
//                    case 1:
//                        content = {
//                            newTitle: data.title,
//                            varyId: data.varyId,
//                            id: data.id,
//                            rank: data.rank
//                        };
//                        toAjax(url, content);
//                        break;
//                    case 2:
//                        content = {
//                            newTitle: data.title,
//                            varyId: data.varyId,
//                            id: data.id,
//                            rank: data.rank
//                        };
//                        toAjax(url, content);
//                        break;
//                    case 3:
//                        content = {
//                            newTitle: data.title,
//                            varyId: data.varyId,
//                            id: data.id,
//                            rank: data.rank
//                        };
//                        toAjax(url, content);
//                        break;
//                }
//            }
//            else if (type === 'del') { //删除节点
//                $.ajax({
//                    type: "POST",
//                    url: "/Curricula/DeleteModule",
//                    data: {
//                        id: data.id,
//                        rank: data.rank
//                    },
//                    dataType: "json",
//                    success: function (data) {
//                        if (data.msg !== false) {
//                            layer.msg("删除成功");
//                        } else {
//                            layer.msg("删除失败");
//                        }

//                    }
//                });
//            };
//        }
//    });
//    //按钮事件
//    util.event('lay-demo',
//        {
//            addParent: function () {
//                layer.prompt({ title: '添加', formType: 3 },
//                    function (text, index) {
//                        layer.close(index);
//                        const url = "/Curricula/AddModule";

//                        let content = {
//                            newTitle: text, //新title
//                            varyId: -1, //父级课程id
//                            id: -1,  //父级id
//                            rank: 1 //父级等级
//                        };
//                        $.ajax({
//                            type: "POST",
//                            url: url,
//                            data: content,
//                            dataType: "json",
//                            success: function (data) {
//                                if (data.msg !== false)
//                                    tree.reload('menuTree', { data: getData() }); //除根目录需要重载
//                                else {
//                                    layer.msg("分类已存在！");
//                                }
//                            }
//                        });
//                    }
//                );
//            }
//        });


//    function addAjax(urls, content) {
//        //var callBackData= { title: content.newTitle, id: content.id, varyId: content.varyId, rank: content.rank }
//        $.ajax({
//            type: "POST",
//            url: urls,
//            data: content,
//            dataType: "json",
//            success: function (data) {
//                if (data.msg !== false) {
//                    var callBackData = { title: data.title, id: data.id, varyId: data.varyId, rank: data.rank };
//                    parent.addNewFunction(callBackData);
//                } else {
//                    layer.msg("分类已存在！");
//                }

//            }
//        });
//        //parent.addNewFunction(callBackData);

//    }

//    function toAjax(urls, content) {
//        $.ajax({
//            type: "POST",
//            url: urls,
//            data: content,
//            dataType: "json",
//            success: function (data) {
//                if (data.msg !== false)
//                    if (data.msg === "exist"){
//                        layer.msg("分类已存在,保存失败！");
//                    }
//                    else
//                        layer.msg(data.msg);
//            }
//        });
//    }

//    function getData() {
//        var data;
//        $.ajax({
//            url: "/Curricula/ReturnModule",
//            type: "POST",
//            async: false,
//            dataType: "text",
//            success: function (res) {
//                data = res;
//            }
//        });

//        return eval(`(${data})`);
//    }


//});